#include <unordered_map>
#include <string>
#include<fstream>

using namespace std;

class Dict
{
    static string default_dictpath;//默认字典文件位置
    static string default_sep;//默认字典文件key和val的分隔符

public:
    Dict(const string& path=default_dictpath)
        : _dict_path(path)
    {
    }
    bool InitDict()//读取文本文件初始化字典
    {
        ifstream fin;
        fin.open(_dict_path,ios::in);//以只读方式打开文件

        if(!fin.is_open())//如果打开失败
        {
            return false;
        }
        string line;
        while(getline(fin,line))//按行读取
        {
            int pos=line.find(default_sep);
            string key=line.substr(0,pos);//英语单词
            string val=line.substr(pos+default_sep.size());//汉语意思

            _dict[key]=val;//把单词和它的意思插入哈希表
        }
        fin.close();

        return true;
    }
    bool Translation(const string& in,string &out)//翻译（英译汉）
    {
        if(_dict.find(in)==_dict.end())//如果字典中没有
        {
            out="nonentity";
            return false;
        }
        out=_dict[in];
        return true;
    }

private:
    unordered_map<string, string> _dict;
    string _dict_path;
};

string Dict::default_dictpath = "./Dict.txt";
string Dict::default_sep= ": ";
